function _slicedToArray(arr, i) {
  return (
    _arrayWithHoles(arr) ||
    _iterableToArrayLimit(arr, i) ||
    _unsupportedIterableToArray(arr, i) ||
    _nonIterableRest()
  );
}
function _nonIterableRest() {
  throw new TypeError(
    'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
  );
}
function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === 'string') return _arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === 'Object' && o.constructor) n = o.constructor.name;
  if (n === 'Map' || n === 'Set') return Array.from(o);
  if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
    return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
  return arr2;
}
function _iterableToArrayLimit(arr, i) {
  var _i =
    null == arr
      ? null
      : ('undefined' != typeof Symbol && arr[Symbol.iterator]) || arr['@@iterator'];
  if (null != _i) {
    var _s,
      _e,
      _x,
      _r,
      _arr = [],
      _n = !0,
      _d = !1;
    try {
      if (((_x = (_i = _i.call(arr)).next), 0 === i)) {
        if (Object(_i) !== _i) return;
        _n = !1;
      } else
        for (
          ;
          !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i);
          _n = !0
        );
    } catch (err) {
      (_d = !0), (_e = err);
    } finally {
      try {
        if (!_n && null != _i.return && ((_r = _i.return()), Object(_r) !== _r)) return;
      } finally {
        if (_d) throw _e;
      }
    }
    return _arr;
  }
}
function _arrayWithHoles(arr) {
  if (Array.isArray(arr)) return arr;
}
import { CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons';
import { Space } from 'antd';
import 'antd/es/space/style/index.js';
import classnames from 'classnames';
import React, { Children, cloneElement, useCallback, useEffect, useState } from 'react';
import './index.less';
// Sorter
var Sorter = function Sorter(_ref) {
  var value = _ref.value,
    onChange = _ref.onChange,
    disabled = _ref.disabled,
    children = _ref.children;
  var handleClick = useCallback(
    function () {
      if (disabled) return;
      var allowedValues = ['ASC', 'DESC', undefined];
      var index = allowedValues.indexOf(value);
      onChange === null || onChange === void 0 ? void 0 : onChange(allowedValues[(index + 1) % 3]);
    },
    [disabled, value, onChange],
  );
  return /*#__PURE__*/ React.createElement(
    'div',
    {
      className: classnames('szzj-sorter', {
        'szzj-sorter-disabled': disabled,
      }),
      onClick: handleClick,
    },
    /*#__PURE__*/ React.createElement(
      'div',
      {
        className: 'szzj-sorter-content',
      },
      children,
    ),
    /*#__PURE__*/ React.createElement(
      'div',
      {
        className: 'szzj-sorter-icons',
      },
      /*#__PURE__*/ React.createElement(CaretUpOutlined, {
        className: classnames({
          actived: value === 'ASC',
        }),
        onClick: function onClick(event) {
          if (disabled) return;
          event.stopPropagation();
          onChange === null || onChange === void 0 ? void 0 : onChange('ASC');
        },
      }),
      /*#__PURE__*/ React.createElement(CaretDownOutlined, {
        className: classnames({
          actived: value === 'DESC',
        }),
        onClick: function onClick(event) {
          if (disabled) return;
          event.stopPropagation();
          onChange === null || onChange === void 0 ? void 0 : onChange('DESC');
        },
      }),
    ),
  );
};

// Sorter.Group
var Group = function Group(_ref2) {
  var defaultValue = _ref2.defaultValue,
    children = _ref2.children,
    _onChange = _ref2.onChange,
    value = _ref2.value,
    disabled = _ref2.disabled,
    options = _ref2.options;
  var _useState = useState(defaultValue),
    _useState2 = _slicedToArray(_useState, 2),
    sorter = _useState2[0],
    setSorter = _useState2[1];
  useEffect(
    function () {
      if (value !== sorter) {
        if (value !== undefined || sorter !== defaultValue) {
          setSorter(value);
        }
      }
    },
    [value],
  );
  var childNodes =
    options !== null && options !== void 0 && options.length
      ? options.map(function (item) {
          return /*#__PURE__*/ React.createElement(
            Sorter,
            {
              key: item.value,
            },
            item.label,
          );
        })
      : children;
  return /*#__PURE__*/ React.createElement(
    Space,
    null,
    Children.map(childNodes, function (child) {
      return /*#__PURE__*/ cloneElement(child, {
        value:
          (sorter === null || sorter === void 0 ? void 0 : sorter.field) === child.key
            ? sorter === null || sorter === void 0
              ? void 0
              : sorter.sortBy
            : undefined,
        onChange: function onChange(value) {
          var newValue = {
            field: child.key,
            sortBy: value,
          };
          setSorter(newValue);
          _onChange === null || _onChange === void 0 ? void 0 : _onChange(newValue);
        },
        disabled: 'disabled' in child.props ? child.props.disabled : disabled,
      });
    }),
  );
};
Sorter.Group = Group;
export default Sorter;
